package io.evanwong.oss.hipchat.v2.commons; import org.apache.http.Consts; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.entity.StringEntity; import org.apache.http.message.BasicHeader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Map; import java.util.concurrent.ExecutorService; public abstract class PostRequest<T> extends Request<T> { private static final Logger log = LoggerFactory.getLogger(PostRequest.class); protected PostRequest(String accessToken, String baseUrl, HttpClient httpClient, ExecutorService executorService) { super(accessToken, baseUrl, httpClient, executorService); } @Override protected HttpResponse request() throws IOException { Map<String, Object> params = toQueryMap(); String encodedPath = getEncodedPath(); log.info("POST - path: {}, params: {}", encodedPath, params); HttpPost httpPost = new HttpPost(baseUrl + encodedPath); httpPost.addHeader(new BasicHeader("Authorization", "Bearer " + accessToken)); httpPost.addHeader(new BasicHeader("Content-Type", "application/json")); httpPost.setEntity(new StringEntity(objectWriter.writeValueAsString(params), Consts.UTF_8)); return httpClient.execute(httpPost, HttpClientContext.create()); } }